The subject matter disclosed herein relate to the field of graphics processing and, without limitation, techniques for task execution on a graphics processor using indirect argument buffers.
Graphics processing units (GPUs) have become important for processing data-parallel graphics tasks. Developers now recognize that non-graphics data-parallel tasks can also be handled by GPUs, taking advantage of their massive parallel capabilities. Vendors and standards organizations have created application programming interfaces (APIs) that make graphics data-parallel tasks easier to program. However, there are also low-level APIs (or libraries/frameworks etc.) that reside closer to hardware and are generally employed by applying the output of higher-level APIs. In other words, the higher-level APIs generally prepare program code for application to the lower-level APIs.
To take advantage of certain GPU capabilities, it may be necessary to pass a set of resources to the GPU via multiple API calls. Each API call has a non-insignificant overhead cost associated with it. Additionally, where a particular set of resources are used from frame to frame, passing this set of resources repeatedly for multiple API calls over possibly multiple frames may be resource inefficient and time consuming.